58 research outputs found

    A Framework for Agile Development of Component-Based Applications

    Get PDF
    Agile development processes and component-based software architectures are two software engineering approaches that contribute to enable the rapid building and evolution of applications. Nevertheless, few approaches have proposed a framework to combine agile and component-based development, allowing an application to be tested throughout the entire development cycle. To address this problematic, we have built CALICO, a model-based framework that allows applications to be safely developed in an iterative and incremental manner. The CALICO approach relies on the synchronization of a model view, which specifies the application properties, and a runtime view, which contains the application in its execution context. Tests on the application specifications that require values only known at runtime, are automatically integrated by CALICO into the running application, and the captured needed values are reified at execution time to resume the tests and inform the architect of potential problems. Any modification at the model level that does not introduce new errors is automatically propagated to the running system, allowing the safe evolution of the application. In this paper, we illustrate the CALICO development process with a concrete example and provide information on the current implementation of our framework

    Contrôle de la fiabilité des logiciels à évoluer : un canevas pour le développement incrémental et itératif de logiciels à composants et orientés service

    Get PDF
    National audienceLes systèmes logiciels modernes se distinguent par un besoin d'évolution rapide et une complexité croissante, avec notamment l'apparition de nouveaux domaines d'applications, comme par exemple les logiciels destinés aux périphériques mobiles, c'est-à-dire les assistants mobiles tels que les téléphones ou encore les tablettes. Dans ces domaines, les utilisateurs réclament que les logiciels fournissent toujours plus de fonctionnalités. Ces logiciels ont alors besoin de prendre en compte ces nouvelles exigences demandées, tout en ayant conscience du nombre toujours croissant de périphériques hétérogènes

    From a Domain Analysis to the Specification and Detection of Code and Design Smells

    Get PDF
    Code and design smells are recurring design problems in software systems that must be identified to avoid their possible negative consequences\ud on development and maintenance. Consequently, several smell detection\ud approaches and tools have been proposed in the literature. However,\ud so far, they allow the detection of predefined smells but the detection\ud of new smells or smells adapted to the context of the analysed systems\ud is possible only by implementing new detection algorithms manually.\ud Moreover, previous approaches do not explain the transition from\ud specifications of smells to their detection. Finally, the validation\ud of the existing approaches and tools has been limited on few proprietary\ud systems and on a reduced number of smells. In this paper, we introduce\ud an approach to automate the generation of detection algorithms from\ud specifications written using a domain-specific language. This language\ud is defined from a thorough domain analysis. It allows the specification\ud of smells using high-level domain-related abstractions. It allows\ud the adaptation of the specifications of smells to the context of\ud the analysed systems.We specify 10 smells, generate automatically\ud their detection algorithms using templates, and validate the algorithms\ud in terms of precision and recall on Xerces v2.7.0 and GanttProject\ud v1.10.2, two open-source object-oriented systems.We also compare\ud the detection results with those of a previous approach, iPlasma

    Déterminer l'impact d'une évolution dans les processus métiers

    Get PDF
    National audienceAvec l'augmentation de la taille et de la complexité des systèmes à bases de services, la tâche du concepteur dans l'évolution des processus métiers est devenue ardue. Une simple modification localisée du processus peut entrainer une dégradation des propriétés non fonc- tionnelles (temps de réponse, sécurité, taille des messages, etc.) de l'application toute entière. Pouvoir déterminer l'impact d'une évolution sur l'ensemble du système aiderait le concepteur à se rendre compte a priori des conséquences potentielles de l'évolution. Nous proposons de construire un canevas de conception et d'évolution à base de modèles pour aider le concepteur à déterminer l'effet d'une évolution sur le système en s'appuyant sur des analyses d'impact

    Software Architecture Evolution

    Get PDF
    This chapter provides an overview, comparison and detailed treatment of the various state-of-the-art approaches to evolving software architectures. Furthermore, we discuss one particular framework for software architecture evolution in more detail

    Towards Bridging the Gap Between Programming Languages and Partial Evaluation

    Get PDF
    International audiencePartial evaluation is a program-transformation technique that automatically specializes a program with respect to user-supplied invariants. Despite successful applications in areas such as graphics, operating systems, and software engineering, partial evaluators have yet to achieve widespread use. One reason is the difficulty of adequately describing specialization opportunities. Indeed, under-specialization or over-specialization often occurs, without any direct feedback to the user as to the source of the problem. We have developed a high-level, module-based language allowing the programmer to guide the choice of both the code to specialize and the invariants to exploit during the specialization process. To ease the use of partial evaluation, the syntax of this language is similar to the declaration syntax of the target language of the partial evaluator. To provide feedback to the programmer, declarations are checked throughout the analyses performed by partial evaluation. The language has been successfully used by a signal-processing expert in the design of a specializable Forward Error Correction component

    Tutorial on Online Partial Evaluation

    Full text link
    This paper is a short tutorial introduction to online partial evaluation. We show how to write a simple online partial evaluator for a simple, pure, first-order, functional programming language. In particular, we show that the partial evaluator can be derived as a variation on a compositionally defined interpreter. We demonstrate the use of the resulting partial evaluator for program optimization in the context of model-driven development.Comment: In Proceedings DSL 2011, arXiv:1109.032

    Towards Bridging the Gap Between Programming Languages and Partial Evaluation

    No full text
    Partial evaluation is a program-transformation technique that automatically specializes a program with respect to user-supplied invariants. Despite successful applications in areas such as graphics, operating systems, and software engineering, partial evaluators have yet to achieve widespread use. One reason is the difficulty of adequately describing specialization opportunities. Indeed, under-specialization or over-specialization often occurs, without any direct feedback to the user as to the source of the problem. We have developed a high-level, module-based language allowing the programmer to guide the choice of both the code to specialize and the invariants to exploit during the specialization process. To ease the use of partial evaluation, the syntax of this language is similar to the declaration syntax of the target language of the partial evaluator. To provide feedback to the programmer, declarations are checked throughout the analyses performed by partial evaluation. The language has been successfully used by a signal-processing expert in the design of a specializable Forward Error Correction component. 1

    Approche déclarative à la spécialisation de programmes C

    No full text
    RENNES1-BU Sciences Philo (352382102) / SudocSudocFranceF
    • …
    corecore